# -*- coding: UTF-8 -*-
# Utilisez ce module pour envoyer des e-mails.

from django.conf.settings import DEFAULT_FROM_EMAIL, EMAIL_HOST
from email.MIMEText import MIMEText
import smtplib

def send_mail(subject, message, from_email, recipient_list, fail_silently=False):
    """
    Une fonction pratique construite autour de send_mass_mail qui envoie un message
    à une liste de destinataires. Tous les membres de la liste de destinataires
    pourront voir les autres dans le champ 'To'.
    """
    return send_mass_mail([[subject, message, from_email, recipient_list]], fail_silently)

def send_mass_mail(datatuple, fail_silently=False):
    """
    Vous devez passer à cette fonction une liste de tuples de la forme
    (objet, message, email_de, liste_destinataires); elle envoie
    ensuite chaque message de la liste à tous les destinataires correspondants.
    La fonction renvoie le nombre d'e-mails envoyés au total.

    Si l'élément email_de a pour valeur None, le paramètre DEFAULT_FROM_EMAIL est
    utilisé.
    """
    try:
        server = smtplib.SMTP(EMAIL_HOST)
    except:
        if fail_silently:
            return
        raise
    num_sent = 0
    for subject, message, from_email, recipient_list in datatuple:
        if not recipient_list:
            continue
        from_email = from_email or DEFAULT_FROM_EMAIL
        msg = MIMEText(message)
        msg['Subject'] = subject
        msg['From'] = from_email
        msg['To'] = ', '.join(recipient_list)
        server.sendmail(from_email, recipient_list, msg.as_string())
        num_sent += 1
    server.quit()
    return num_sent

def mail_admins(subject, message, fail_silently=False):
    "Envoie un message aux administrateurs, définis par la constante ADMINS du fichier settings.py."
    from django.conf.settings import ADMINS, SERVER_EMAIL
    send_mail('[Django] ' + subject, message, SERVER_EMAIL, [a[1] for a in ADMINS], fail_silently)

def mail_managers(subject, message, fail_silently=False):
    "Envoie un message aux gérants, définis par la constante MANAGERS du fichier settings.py."
    from django.conf.settings import MANAGERS, SERVER_EMAIL
    send_mail('[Django] ' + subject, message, SERVER_EMAIL, [a[1] for a in MANAGERS], fail_silently)
